<?php
    /*    网站验证码程序
     *    运行环境： PHP5.0.18 下调试通过
     *    需要 gd2 图形库支持（PHP.INI中 php_gd2.dll开启）
     *    文件名: showimg.php
     *    作者：   dengwubin.com
     *    Date:    2008.09
     *    技术支持： www.dengwubin.cn
     */

    //随机生成一个4位数的数字验证码
     $num="";
     for($i=0;$i<4;$i++){
     $num .= rand(0,9);
     }
    //4位验证码也可以用rand(1000,9999)直接生成
    //将生成的验证码写入session，备验证页面使用
     Session_start();
     $_SESSION['checkCode'] = $num;
    //创建图片，定义颜色值
     Header("Content-type: image/png");
     srand((double)microtime()*1000000);
     $im = imagecreate(50,22);
     $black = ImageColorAllocate($im, 47,127,200);
     $gray = ImageColorAllocate($im, 255,255,255);
     imagefill($im,0,0,$gray);

     //随机绘制两条虚线，起干扰作用
     $style = array($black, $black, $black, $black, $black, $gray, $gray, $gray, $gray, $gray);
     imagesetstyle($im, $style);
     $y1=rand(0,20);
     $y2=rand(0,20);
     $y3=rand(0,20);
     $y4=rand(0,20);
     imageline($im, 0, $y1, 60, $y3, IMG_COLOR_STYLED);
     imageline($im, 0, $y2, 60, $y4, IMG_COLOR_STYLED);

     //在画布上随机生成大量黑点，起干扰作用;
     for($i=0;$i<80;$i++)
     {
    imagesetpixel($im, rand(0,60), rand(0,70), $black);
     }
     //将四个数字随机显示在画布上,字符的水平间距和位置都按一定波动范围随机生成
     $strx=rand(3,8);
     for($i=0;$i<4;$i++){
     $strpos=rand(1,6);
     imagestring($im,5,$strx,$strpos, substr($num,$i,1), $black);
     $strx+=rand(8,12);
     }
     imagepng($im);
     ImageDestroy($im);
?>